const { BrowserWindow } = require('electron');

class ElectronWrapper {
    constructor(options) {
        // 默认选项对象
        const defaultOptions = {
            webContents: null, // 窗口的 WebContents 对象
            width: 800, // 窗口的宽度
            height: 600, // 窗口的高度
            x: undefined, // 窗口的 x 坐标
            y: undefined, // 窗口的 y 坐标
            useContentSize: false, // 是否使用内容的尺寸来定义窗口的大小
            center: false, // 是否居中显示窗口
            minWidth: 0, // 窗口的最小宽度
            minHeight: 0, // 窗口的最小高度
            maxWidth: undefined, // 窗口的最大宽度
            maxHeight: undefined, // 窗口的最大高度
            resizable: true, // 是否允许改变窗口的大小
            movable: true, // 是否允许移动窗口
            minimizable: true, // 是否允许最小化窗口
            maximizable: true, // 是否允许最大化窗口
            closable: true, // 是否允许关闭窗口
            focusable: true, // 是否允许窗口获得焦点
            alwaysOnTop: false, // 是否始终显示在其他窗口之上
            fullscreen: false, // 是否全屏显示窗口
            fullscreenable: true, // 是否允许窗口全屏显示
            simpleFullscreen: false, // 是否使用简单全屏模式
            skipTaskbar: false, // 是否在任务栏中显示窗口
            kiosk: false, // 是否使用 kiosk 模式
            title: '', // 窗口的标题
            icon: undefined, // 窗口的图标
            show: true, // 是否显示窗口
            acceptFirstMouse: false, // 是否允许窗口接收第一次鼠标点击
            disableAutoHideCursor: false, // 是否禁用自动隐藏鼠标指针
            autoHideMenuBar: false, // 是否自动隐藏菜单栏
            enableLargerThanScreen: false, // 是否允许窗口超过屏幕大小
            backgroundColor: '#FFF', // 窗口的背景颜色
            hasShadow: true, // 是否显示窗口阴影
            opacity: 1.0, // 窗口的不透明度
            darkTheme: false, // 是否使用暗色主题
            transparent: false, // 窗口是否透明
            type: 'normal', // 窗口的类型
            titleBarStyle: 'default', // 窗口的标题栏样式
            thickFrame: true, // 窗口是否有粗边框
            vibrancy: undefined, // 窗口的视觉效果
            zoomToPageWidth: false, // 是否根据页面的宽度缩放窗口
            tabbingIdentifier: undefined, // 用于窗口分组的标识符
            webPreferences: {}, // WebPreferences 对象，用于配置窗口的 Web 页面
            // 添加其他实例属性，默认值可以根据需要进行扩展
        };

        // 合并默认选项和传入的选项
        const config = { ...defaultOptions, ...options };

        // 创建 BrowserWindow 实例
        this.window = new BrowserWindow(config);

        // 添加其他方法和逻辑
        this.options = new Proxy(config, {
            set: (target, prop, value) => {
                // 设置属性值
                target[prop] = value;
            }
        });
    }

    // 添加其他方法和逻辑，根据需要进行扩展
}

module.exports = ElectronWrapper;


let win = new ElectronWrapper()
win.options.alwaysOnTop